package com.heima;

import com.alibaba.fastjson.JSON;
import com.heima.article.ArticleApplication;
import com.heima.freemarker.pojo.ContentVO;
import freemarker.template.Template;


import freemarker.template.TemplateException;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import freemarker.template.Configuration;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;


@SpringBootTest(classes = ArticleApplication.class)
public class test {
   @Autowired
   private Configuration configuration;

    @Test
    void genContent1000000()  {
        //1.整合freemarker
        //2读取加载模板
        try {
            Template template = configuration.getTemplate("article.ftl");

            //3.准备数据 自己找个文章即可
              String content ="[{\"type\":\"image\",\"value\":\"http://192.168.200.130/group1/M00/00/00/wKjIgl892wqAANwOAAJW8oQUlAc087.jpg\"},{\"type\":\"text\",\"value\":\"我躺着，听船底潺潺的水声，知道我在走我的路。我想：我竟与闰土隔绝到这地步了，但我们的后辈还是一气，宏儿不是正在想念水生么。我希望他们不再像我，又大家隔膜起来……然而我又不愿意他们因为要一气，都如我的辛苦展转而生活，也不愿意他们都如闰土的辛苦麻木而生活，也不愿意都如别人的辛苦恣睢而生活。他们应该有新的生活，为我们所未经生活过的。\"}]";

            HashMap<String, Object> dataMap = new HashMap<>();
            List<ContentVO> contentVOS = JSON.parseArray(content, ContentVO.class);
            dataMap.put("content",contentVOS);

         //4.生成静态页面，并输出到 《资料/模板文件/2023/02/19/》下面，文件名 ?.html
            template.process(dataMap,new FileWriter("D:\\上课资料\\web\\52资料\\黑马头条\\day02-app端文章查看，静态化freemarker,分布式文件系统minIO\\资料\\模板文件\\2023\\2\\19\\wj.html"));

        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (TemplateException e) {
            throw new RuntimeException(e);
        }


    }

    //作业2 完成minio的文件上传功能！ 将html传到minio的桶中，名字叫leadnews ,放置到桶中的2023/02/19目录(选做)下！

    @Test
    public void minioUploadTest(){
        FileInputStream inputStream = null;
        try {
            //创建minio连接客户端
            MinioClient minioClient = MinioClient.builder()
                    //设置连接的用户名和密码
                    .credentials("minio", "minio123")
                    //设置连接网址
                    .endpoint("http://192.168.200.130:9000")
                    .build();

            //读取要上传的文件
            inputStream = new FileInputStream("D:/ikun.jpg");
            //上传文件设置
            PutObjectArgs objectArgs = PutObjectArgs.builder()
                    //要保存的文件名称
                    .object("2023/2/19/test1.jpg")
                    //文件mime类型
                    .contentType("image/jpeg")
                    //要存储的桶名称
                    .bucket("test")
                    //要上传的文件
                    .stream(inputStream, inputStream.available(), -1)
                    .build();
            //使用minio连接客户端上传文件
            minioClient.putObject(objectArgs);
            System.out.println("http://192.168.200.130:9000/eleike/test1.jpg");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
